home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / bathroom / code.lua next >
Encoding:
Text File  |  2005-07-16  |  6.5 KB  |  193 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky02.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.switch = 2 - math.mod(pokus, 2)
  16.         room.kdy = 20 + random(20)
  17.         room.bav = random(150)
  18.         room.sprs = 0
  19.         room.sp = 0
  20.         room.pokl = 0
  21.  
  22.         return function()
  23.             pom1 = 0
  24.             if room.kdy > 0 then
  25.                 room.kdy = room.kdy - 1
  26.             end
  27.             if room.bav > 0 then
  28.                 room.bav = room.bav - 1
  29.             end
  30.             if no_dialog() and isReady(small) and isReady(big) then
  31.                 if room.kdy == 0 then
  32.                     pom1 = room.switch
  33.                     room.switch = 3 - room.switch
  34.                     room.kdy = 500 + random(1000)
  35.                 end
  36.                 if room.sprs == 0 then
  37.                     if dist(small, sprc) < 2 or sprc.dir ~= dir_no then
  38.                         if random(20) == 1 then
  39.                             room.sprs = 1
  40.                             pom1 = 3
  41.                         end
  42.                     end
  43.                 end
  44.                 if room.bav == 0 and (whirlpool.tvor > 0 and dist(small, whirlpool) < 2 or whirlpool.dir ~= dir_no) then
  45.                     if whirlpool:isTalking() or whirlpool.dir ~= dir_no then
  46.                         pom2 = random(200)
  47.                     else
  48.                         pom2 = random(500)
  49.                     end
  50.                     switch(pom2){
  51.                         [6] = function()
  52.                             pom1 = 6
  53.                         end,
  54.                         [7] = function()
  55.                             pom1 = 7
  56.                         end,
  57.                     }
  58.                 end
  59.                 if room.sp == 0 and sprc.dir == dir_down and random(10) == 1 then
  60.                     room.sp = 1
  61.                     pom1 = 5
  62.                 end
  63.                 if room.pokl == 0 and small.X <= sprc.X and small.Y <= sprc.Y then
  64.                     room.pokl = 1
  65.                     pom1 = 4
  66.                 end
  67.             end
  68.             if pom1 >= 6 then
  69.                 room.bav = random(1000) + 1000
  70.             end
  71.             switch(pom1){
  72.                 [1] = function()
  73.                     if random(4) > 0 then
  74.                         addv(7, "br-v-komfort")
  75.                     end
  76.                     addm(7, "br-m-bydli")
  77.                     if random(5) > 0 then
  78.                         addv(7, "br-v-santusak")
  79.                         if random(6) > 0 then
  80.                             addm(7, "br-m-podvodnik")
  81.                         end
  82.                     end
  83.                 end,
  84.                 [2] = function()
  85.                     addm(7, "br-m-vsim" ..random(3))
  86.                     addv(0, "br-v-nerozvadet" ..random(3))
  87.                     if random(7) > 0 then
  88.                         addm(10, "br-m-dva")
  89.                         addv(5, "br-v-dost")
  90.                     end
  91.                 end,
  92.                 [3] = function()
  93.                     addm(7, "br-m-sprcha")
  94.                     addv(7, "br-v-lazen")
  95.                     if random(7) > 0 then
  96.                         addm(9, "br-m-zapnout")
  97.                         addv(6, "br-v-shodit")
  98.                     end
  99.                 end,
  100.                 [4] = function()
  101.                     addm(random(10) + 2, "br-m-poklady")
  102.                 end,
  103.                 [5] = function()
  104.                     addv(7, "br-v-nechat")
  105.                     if random(7) > 0 then
  106.                         addm(7, "br-m-nefunguje")
  107.                     end
  108.                 end,
  109.                 [6] = function()
  110.                     if whirlpool:isTalking() then
  111.                         adddel(13)
  112.                     end
  113.                     if random(7) > 0 then
  114.                         addm(7, "br-m-ahoj")
  115.                     end
  116.                     addv(7, "br-v-draha")
  117.                     if random(6) > 0 then
  118.                         addm(7, "br-m-zkusit")
  119.                     end
  120.                 end,
  121.                 [7] = function()
  122.                     if whirlpool:isTalking() then
  123.                         adddel(16)
  124.                     end
  125.                     addm(7, "br-m-bavi")
  126.                 end,
  127.             }
  128.         end
  129.     end
  130.  
  131.     -- -------------------------------------------------------------
  132.     local function prog_init_whirlpool()
  133.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  134.  
  135.         whirlpool.tvor = 0
  136.  
  137.         return function()
  138.             if whirlpool.anim == "" then
  139.                 switch(random(5)){
  140.                     [3] = function()
  141.                         if game_getCycles() > 20 then
  142.                             setanim(whirlpool, "d?2-8S[tvor],1a4d?2-5a5a4d?1-3a5d?1-3a4d?2-7a5d?1-3S[tvor],0a0d?2-4")
  143.                         end
  144.                     end,
  145.                     [4] = function()
  146.                         if game_getCycles() > 20 then
  147.                             setanim(whirlpool, "d?1-3S[tvor],1a4d?1-5a5d?1-5a4d?1-5" ..
  148.                                 "a6a7a8a9a6a7a8a9a6a7a8a9a6a7a8a9d?2-5a4d?1-3a5d1a4d?1-3" ..
  149.                                 "a9a8a7a6a9a8a7a6a9a8a7a6a9a8a7a6d?1-3a4d?1-3S[tvor],0a0")
  150.                         end
  151.                     end,
  152.                     default = function()
  153.                         setanim(whirlpool, "d13a0a1a2a3a0a1a2a3a0a1a2a3a0a1a2a3d8a3a2a1a0a3a2a1a0a3a2a1a0a3a2a1a0")
  154.                     end,
  155.                 }
  156.             end
  157.  
  158.             if odd(game_getCycles()) then
  159.                 goanim(whirlpool)
  160.             elseif whirlpool.tvor == 1 and whirlpool.afaze > 5 and not whirlpool:isTalking() and random(20) == 1 then
  161.                 whirlpool:talk("br-x-pracka", VOLUME_FULL)
  162.             end
  163.  
  164.             whirlpool:updateAnim()
  165.         end
  166.     end
  167.  
  168.     -- --------------------
  169.     local update_table = {}
  170.     local subinit
  171.     subinit = prog_init_room()
  172.     if subinit then
  173.         table.insert(update_table, subinit)
  174.     end
  175.     subinit = prog_init_whirlpool()
  176.     if subinit then
  177.         table.insert(update_table, subinit)
  178.     end
  179.     return update_table
  180. end
  181. local update_table = prog_init()
  182.  
  183.  
  184. -- -----------------------------------------------------------------
  185. -- Update
  186. -- -----------------------------------------------------------------
  187. function prog_update()
  188.     for key, subupdate in pairs(update_table) do
  189.         subupdate()
  190.     end
  191. end
  192.  
  193.